/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.reportes;

import com.camachosanchez.reportes.bean.HistorialMovimientosNeumatico;
import com.camachosanchez.util.Constantes;
import com.camachosanchez.util.GUIUtil;
import com.camachosanchez.util.ReportUtil;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileOutputStream;
import java.util.List;

/**
 *
 * @author Rolando
 */
public class _ReporteHistorialMovimientosNeumatico {

    public static String generarReporte(HistorialMovimientosNeumatico historial) {
        String rutaArchivo = "reportes/historial_neumatico_" + historial.getCodigo() + "_" + GUIUtil.obtenerFechaDDMMYYYHHMMSS() + ".pdf";
        try {
            Document document = new Document(PageSize.A4, 20, 20, 20, 20);
            PdfWriter.getInstance(document, new FileOutputStream(rutaArchivo));
            document.open();
            Paragraph paragraph = new Paragraph();
            paragraph.setAlignment(Element.ALIGN_CENTER);
            document.add(ReportUtil.obtenerCabeceraTabla("HISTORIAL DE MOVIMIENTOS DE NEUMÁTICO"));
            document.add(new Paragraph("\n"));
            PdfPTable table = new PdfPTable(6);
            table.setWidthPercentage(100);
            table.addCell(ReportUtil.obtenerCeldaSinBorde("Código:", Constantes.fuenteEtiqueta, 1));
            table.addCell(ReportUtil.obtenerCeldaSinBorde(historial.getCodigo(), Constantes.fuenteCuerpo, 1));
            table.addCell(ReportUtil.obtenerCeldaSinBorde("Marca:", Constantes.fuenteEtiqueta, 1));
            table.addCell(ReportUtil.obtenerCeldaSinBorde(historial.getMarca(), Constantes.fuenteCuerpo, 1));
            table.addCell(ReportUtil.obtenerCeldaSinBorde("Banda:", Constantes.fuenteEtiqueta, 1));
            table.addCell(ReportUtil.obtenerCeldaSinBorde(historial.getBanda(), Constantes.fuenteCuerpo, 1));
            document.add(table);
            document.add(new Paragraph("\n"));
            PdfPTable tablaMontajesDesmontajes = new PdfPTable(7);
            tablaMontajesDesmontajes.setWidthPercentage(100);
            tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla("MONTAJES Y DESMONTAJES", Constantes.fuenteTitulos, 7));
            tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla("FECHA", Constantes.fuenteTitulos, 1));
            tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla("VEHÍCULO", Constantes.fuenteTitulos, 1));
            tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla("TALLER", Constantes.fuenteTitulos, 1));
            tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla("KILOMETRAJE", Constantes.fuenteTitulos, 1));
            tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla("TIPO", Constantes.fuenteTitulos, 1));
            tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla("POS", Constantes.fuenteTitulos, 1));
            tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla("OBSERVACIÓN", Constantes.fuenteTitulos, 1));
            List<String[]> listaMontajes = historial.getListaMontajes();
            if (listaMontajes != null) {
                for (String[] strings : listaMontajes) {
                    if (strings.length == 7) {
                        tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[0], Constantes.fuenteCuerpo, 1));
                        tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[1], Constantes.fuenteCuerpo, 1));
                        tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[2], Constantes.fuenteCuerpo, 1));
                        tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[3], Constantes.fuenteCuerpo, 1));
                        tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[4], Constantes.fuenteCuerpo, 1));
                        tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[5], Constantes.fuenteCuerpo, 1));
                        tablaMontajesDesmontajes.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[6], Constantes.fuenteCuerpo, 1));
                    }

                }
            }
            document.add(tablaMontajesDesmontajes);

            document.add(new Paragraph("\n"));
            PdfPTable tablaReencauches = new PdfPTable(10);
            tablaReencauches.setWidthPercentage(100);
            tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla("ENVÍOS Y RECEPCIONES A REENCAUCHE", Constantes.fuenteTitulos, 10));
            tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla("ENVÍO", Constantes.fuenteSmallTitulos, 1));
            tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla("DISTRIBUIDOR", Constantes.fuenteSmallTitulos, 1));
            tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla("Nº DE FACTURA", Constantes.fuenteSmallTitulos, 1));
            tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla("RECEPCIÓN", Constantes.fuenteSmallTitulos, 1));
            tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla("NUEVA BANDA", Constantes.fuenteSmallTitulos, 1));
            tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla("NUEVO PISO", Constantes.fuenteSmallTitulos, 1));
            tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla("GUÍA DE REMISIÓN", Constantes.fuenteSmallTitulos, 1));
            tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla("PRECIO", Constantes.fuenteSmallTitulos, 1));
            tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla("GARANTÍA", Constantes.fuenteSmallTitulos, 1));
            tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla("OBSERVACIONES", Constantes.fuenteSmallTitulos, 1));
            List<String[]> listaReencauches = historial.getListaReencauches();
            if (listaReencauches != null) {
                for (String[] strings : listaReencauches) {
                    if (strings.length == 10) {
                        tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[0], Constantes.fuenteSmallCuerpo, 1));
                        tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[1], Constantes.fuenteSmallCuerpo, 1));
                        tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[2], Constantes.fuenteSmallCuerpo, 1));
                        tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[3], Constantes.fuenteSmallCuerpo, 1));
                        tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[4], Constantes.fuenteSmallCuerpo, 1));
                        tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[5], Constantes.fuenteSmallCuerpo, 1));
                        tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[6], Constantes.fuenteSmallCuerpo, 1));
                        tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[7], Constantes.fuenteSmallCuerpo, 1));
                        tablaReencauches.addCell(ReportUtil.obtenerCeldaCabeceraTabla(strings[8], Constantes.fuenteSmallCuerpo, 1));
                        tablaReencauches.addCell(ReportUtil.obtenerCeldaTexto(strings[9], Constantes.fuenteSmallCuerpo, 1));
                    }

                }
            }
            document.add(tablaReencauches);
            document.close();
        } catch (Exception e) {
            rutaArchivo = null;
        } finally {
            return rutaArchivo;
        }
    }
}
